package main

import (
	"fmt"
	"strconv"
)

/*
*
https://studygolang.com/static/pkgdoc/pkg/fmt.htm

基本类型转string类型

	方式1 ： fmt.Sprintf('%参数',表达式)
	方式2 ：使用strconv包的函数
*/
func main() {

	var a int = 19
	var b float32 = 18.9
	var c bool = false
	var d byte = 'a'

	fmt.Println(a, b, c, d)
	fmt.Println()

	var s1 string = fmt.Sprintf("%d", a)
	fmt.Printf("s1对应的类型是： %T = %v", s1, s1)

	fmt.Println()
	var s2 string = fmt.Sprintf("%f", b)
	fmt.Printf("s2对应的类型是： %T = %q", s2, s2)

	fmt.Println()
	var s3 string = fmt.Sprintf("%t", c)
	fmt.Printf("s3对应的类型是： %T = %q", s3, s3)

	fmt.Println()
	var s4 string = fmt.Sprintf("%c", d)
	fmt.Printf("s4对应的类型是： %T = %q", s4, s4)

	// -----------------
	fmt.Println()
	var n1 int = 18
	var cs1 string = strconv.Itoa(n1)
	fmt.Printf("cs1对应的类型是： %T = %q", cs1, cs1)

	fmt.Println()
	// 参数：第一个参数必须转为int64类型，第二个参数指定字母值的进制为十进制
	var cs2 string = strconv.FormatInt(int64(n1), 10)
	fmt.Printf("cs2对应的类型是： %T = %q \n", cs2, cs2)

	// string 转为 bool --------------------------------------
	var sb1 string = "2"
	//var sb1 string = "false"
	var rb bool

	// ParseBool 这个函数的返回值有两个：(value bool,err error)
	// value 就是我们得到的布尔类型的数据，err 出现的错误
	// 我们只关注得到的布尔类型的数据， err可以用_直接忽略
	rb, _ = strconv.ParseBool(sb1)
	fmt.Printf("rb 对应的类型是： %T = %v \n", rb, rb)

}
